﻿import matplotlib.pyplot as plt
import numpy as np

class PieChartGenerator:
    def __init__(self, categories, values, syscode):
        """
        初始化 PieChartGenerator 类

        :param categories: 字符串类型的数组，表示类别标签
        :param values: 数值数组，表示每个类别的数据值
        """
        self.categories = categories
        self.values = values
        self.syscode =syscode
    def generate_pie_chart(self):
        """
        生成饼图,后续可根据C#传过来的地址保存为图像文件

        :param output_path: 输出图像文件的路径
        """
        try:
            #根据操作系统的不同设置不同的字体避免无法显示
            if self.syscode == 1:
                 # 设置字体为 Microsoft YaHei
                plt.rcParams['font.family'] = ['Microsoft YaHei']
            else:
                #设置linux下的字体
                # plt.rcParams['font.sans-serif']=['Simhei']
                # plt.rcParams['font.family'] = 'sans-serif'
                # plt.rcParams['axes.unicode_minus']=False
                # 尝试使用'WenQuanYi Micro Hei'
                plt.rcParams['font.family'] = ['WenQuanYi Micro Hei']
                # 支持负号等符号正确显示，添加如下行：
                plt.rcParams['axes.unicode_minus'] = False

            # 创建饼图
            plt.figure(figsize=(8, 8))
            plt.pie(self.values,
                   labels=self.categories,
                  autopct='%.2f%%',
                  shadow=False
                  
                  )
            plt.legend()
            plt.title("占比情况")
            plt.show()
            # # 保存图像文件
            # plt.savefig(output_path)
            # plt.close()

            # print(f"饼图已成功保存到 {output_path}")
        except Exception as e:
            print(f"生成饼图时出错: {e}")


    def  showparabola(self):
        # 创建 x 值
        xpoints = np.linspace(-10, 10, 400)

        # 计算对应的 y 值（简单抛物线：y = x^2）
        ypoints = xpoints ** 2

        # 绘制抛物线
        plt.plot(xpoints, ypoints)
        plt.axhline(0, color='black',linewidth=0.5)
        plt.axvline(0, color='black',linewidth=0.5)
        plt.grid(color = 'gray', linestyle = '--', linewidth = 0.5)
        plt.title('Parabola')
        plt.xlabel('x')
        plt.ylabel('y')
        plt.show()

 # 示例用法
if __name__ == "__main__":
    categories = ['兰江', '云山', '永昌', '上华', '赤溪', '女埠']
    values = [153, 124, 107, 99, 89, 46]
    generator = PieChartGenerator(categories, values)
    generator.generate_pie_chart()



